%macro attrn(ds,attrib); %local _attrndsid_ _attrnrc_; %let _attrndsid_=%sysfunc(open(&ds,is)); %if &_attrndsid_ EQ 0 %then %do; %put ERROR: (attrn) Dataset %data(&ds) not opened due to the following reason:; %put %sysfunc(sysmsg()); %end; %else %do; %sysfunc(attrn(&_attrndsid_,&attrib)) %let _attrnrc_=%sysfunc(close(&_attrndsid_)); %end; %mend attrn;